/**
 * 文件名称: eeprom.h
 * 摘    要: linux应用程序下操作eeprom头文件
 * 来    源: 自我总结
 *
 * 当前版本: 1.0 
 * 作    者: huenrong
 * 完成日期: 2019年06月12日
 **/


#ifndef __EEPROM_H__
#define __EEPROM_H__


#define     EEPROM_DEV_NAME     "/sys/bus/i2c/devices/0-0050/eeprom"        // eeprom设备文件路径

/************************************************************************
函数名称: eeprom_init
函数功能: eeprom设备初始化
函数参数: path_name: 需要打开的eeprom设备路径(形如: /sys/bus/i2c/devices/0-0050/eeprom，不能是/dev/i2c-0)
函数返回: 成功: 返回打开设备的文件描述符
          失败: 返回-1
************************************************************************/
int eeprom_init(const char *path_name);

/************************************************************************
函数名称: eeprom_close
函数功能: eeprom设备关闭
函数参数: fd: 需要关闭的eeprom设备文件描述符
函数返回: 成功: 返回0
          失败: 返回-1
************************************************************************/
int eeprom_close(const int fd);

/************************************************************************
函数名称: eeprom_write_nbyte
函数功能: 向eeprom指定寄存器写入指定长度的数据
函数参数: fd: 需要写入数据的设备的文件描述符
          write_addr: 写入数据的起始寄存器地址
          write_data: 需要写入的数据
          write_data_len: 需要写入的数据长度
函数返回: 成功: 返回实际写入的长度
          失败: 返回-1
************************************************************************/
int eeprom_write_nbyte(const int fd, unsigned short write_addr, const char *write_data, const unsigned short write_data_len);

/************************************************************************
函数名称: eeprom_read_nbyte
函数功能: 从eeprom指定寄存器读取指定长度的数据
函数参数: fd: 需要读取数据的设备的文件描述符
          read_addr: 读取数据的起始寄存器地址
          read_data: 读取到的数据
          read_data_len: 需要读取的数据长度
函数返回: 成功: 返回实际读取的长度
          失败: 返回-1
************************************************************************/
int eeprom_read_nbyte(const int fd, unsigned short read_addr, char *read_data, const unsigned short read_data_len);


#endif

